#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct TipoGrafo {
  int **matriz;
  int NumVertices;
  int NumArestas;
} TipoGrafo;




void criaGrafoVazio(TipoGrafo *grafo, int n);

void insereAresta(TipoGrafo *grafo, int v1, int v2, int peso);

int existeAresta(TipoGrafo *grafo, int v1,int v2);

int listaAdjVazia(TipoGrafo *grafo, int v, int n);

int primeiroListaAdj(TipoGrafo *grafo, int v, int n);

void proxAdj(TipoGrafo *grafo, int n, int v, int *adj, int *peso, int *prox, int *fimListaAdj);

void retiraAresta(TipoGrafo *grafo, int v1, int v2, int *peso);

void imprimeGrafo(TipoGrafo *grafo, int n);

int **liberaGrafo(TipoGrafo *grafo, int n);
